/*
*	Developed by Leonardo Chatain and Pedro Dusso, at Universidade Federal do Rio Grande do Sul, Brasil, 2009/1
*	Source available at glpacman.codeplex.com
*/

#pragma once
#ifndef _VECTOR_3D_
#define _VECTOR_3D_

#include "vector2d.h"

class Vector3D :
	public Vector2D
{
private:
	float z;
public:
	Vector3D(void);
	Vector3D(float x, float y, float z);
	~Vector3D(void);

	//Returns the norm of the vector
	float getNorm();
	//Normalizes the vector
	void normalize();
	//Returns the dot product between the vector and other vector
	float dotProduct(Vector2D other);
	// Multiplies the vector by a scalar
	Vector2D multiply(float c);
	// Returns the lowest positive angle between this and the other vector (CCW)
	float getAngleTo(Vector2D other);
	Vector2D rotate(float theta);

	//Getters and setters
	inline void setZ(float Z) { z = Z; }
	inline float getZ() { return z; }
};

#endif